// pages/myBooking/myBooking.js 保持不变
import { getMyBooking } from "../../api/person"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    active: 0,
    allList: [],
    pendingList: [],    // 待开始
    inProgressList: [], // 进行中
    completedList: [],  // 已结束
    currentTime: null   // 当前时间
  },

  onChange(event) {
    this.setData({
      active: event.detail.name
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 设置当前时间
    this.setCurrentTime();
    this.getAllBooking();
  },

  // 设置当前时间
  setCurrentTime() {
    const now = new Date();
    this.setData({
      currentTime: now
    });
    console.log('当前时间:', now);
  },

  getAllBooking() {
    const studentInfo = wx.getStorageSync('studentInfo');
    const studentId = studentInfo ? studentInfo.id : null;
    getMyBooking(studentId).then(res => {
      console.log('预约数据:', res);
      // 处理数据并分类
      this.processBookingData(res || []);
    }).catch(err => {
      console.error('获取预约数据失败:', err);
      wx.showToast({
        title: '数据加载失败',
        icon: 'none'
      });
    })
  },

  // 处理预约数据并分类
  processBookingData(data) {
    const pendingList = [];    // 待开始
    const inProgressList = []; // 进行中
    const completedList = [];  // 已结束

    data.forEach(item => {
      // 处理咨询类型
      item.consultTypeText = this.getConsultTypeText(item.consultType);
      
      // 计算预约状态
      const statusInfo = this.calculateAppointmentStatus(item);
      item.calculatedStatus = statusInfo.status;
      item.statusText = statusInfo.text;
      item.statusClass = statusInfo.className;
      
      // 根据计算的状态分类
      switch (item.calculatedStatus) {
        case 'pending':
          pendingList.push(item);
          break;
        case 'inProgress':
          inProgressList.push(item);
          break;
        case 'completed':
          completedList.push(item);
          break;
      }
    });

    // 全部列表包含所有数据
    this.setData({
      allList: data,
      pendingList: pendingList,
      inProgressList: inProgressList,
      completedList: completedList
    });
  },

  // 获取咨询类型文本
  getConsultTypeText(consultType) {
    const typeMap = {
      0: '电话咨询',
      1: '线下咨询',
      2: '网络咨询',
      3: '在线聊天'
    };
    return typeMap[consultType] || '其他咨询';
  },

  // 计算预约状态
  calculateAppointmentStatus(item) {
    const now = this.data.currentTime || new Date();
    
    // 解析咨询日期和时间
    const startDateTime = this.parseDateTime(item.consultDate, item.startTime);
    const endDateTime = this.parseDateTime(item.consultDate, item.endTime);
    
    if (!startDateTime || !endDateTime) {
      return {
        status: 'unknown',
        text: '未知',
        className: 'unknown'
      };
    }

    console.log(`预约 ${item.recordNo}:`, {
      开始时间: startDateTime,
      结束时间: endDateTime,
      当前时间: now
    });

    if (now < startDateTime) {
      // 当前时间在开始时间之前 - 待开始
      return {
        status: 'pending',
        text: '待开始',
        className: 'pending'
      };
    } else if (now >= startDateTime && now <= endDateTime) {
      // 当前时间在时间段内 - 进行中
      return {
        status: 'inProgress',
        text: '进行中',
        className: 'inProgress'
      };
    } else {
      // 当前时间在结束时间之后 - 已结束
      return {
        status: 'completed',
        text: '已结束',
        className: 'completed'
      };
    }
  },

  // 解析日期和时间
  parseDateTime(dateStr, timeStr) {
    if (!dateStr || !timeStr) return null;
    
    try {
      // 处理中文日期格式 "2025年11月02日"
      let normalizedDateStr = dateStr;
      if (dateStr.includes('年') && dateStr.includes('月') && dateStr.includes('日')) {
        normalizedDateStr = dateStr
          .replace('年', '-')
          .replace('月', '-')
          .replace('日', '');
      }
      
      // 解析日期
      const [year, month, day] = normalizedDateStr.split('-').map(Number);
      
      // 解析时间
      const [hours, minutes] = timeStr.split(':').map(Number);
      
      // 创建日期对象
      const dateTime = new Date(year, month - 1, day, hours, minutes, 0);
      
      console.log(`解析时间: ${dateStr} ${timeStr} ->`, dateTime);
      
      return dateTime;
    } catch (error) {
      console.error('解析日期时间错误:', error);
      return null;
    }
  },

  // 刷新状态（在页面显示时更新状态）
  onShow() {
    this.setCurrentTime();
    // 如果有数据，重新计算状态
    if (this.data.allList.length > 0) {
      this.processBookingData(this.data.allList);
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 下拉刷新时更新时间和数据
    this.setCurrentTime();
    this.getAllBooking();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})